# 体素下采样：调节体素边长
import open3d as o3d
import numpy as np

# 读取点云（与Part 1一致）
ply_point_cloud = o3d.data.PLYPointCloud()
pcd = o3d.io.read_point_cloud(ply_point_cloud.path)

# voxel_down_sample是 PointCloud 类的方法，专门用于体素下采样功能
# voxel_size参数 用于设定“体素的边长”；数值越小，体素数量越多，点云保留的细节越丰富，丢失的信息越少
voxel_size = 0.1
print(f"使用体素大小为 {voxel_size} 的体素来下采样点云")
downpcd = pcd.voxel_down_sample(voxel_size = voxel_size)

# 可视化下采样结果（与Part 1一致）
o3d.visualization.draw_geometries([downpcd],
                                  zoom=0.3412,
                                  front=[0.4257, -0.2125, -0.8795],
                                  lookat=[2.6172, 2.0475, 1.532],
                                  up=[-0.0694, -0.9768, 0.2024])

